import {ArkActionButton} from "../../common-type/ark-action-button";

interface Footer {
  /** 是否显示 */
  show?: boolean;
  /** 确认按钮 */
  confirm?: ArkActionButton<any>;
  /** 取消按钮 */
  cancel?: ArkActionButton<any>;
}

export interface ArkDialogOptions {
  /** 是否显示 */
  show?: boolean;

  /**
   * 是否全屏显示
   *
   * 如果为true，优先级高于 width、height 属性
   * */
  fullscreen?: boolean;

  /**
   * 宽度
   * - 字符串类型，直接作为CSS width属性值
   * - 数字类型，单位为px
   * */
  width?: string | number;
  /**
   * 高度
   * - 字符串类型，直接作为CSS width属性值
   * - 数字类型，单位为px
   * */
  height?: string | number;

  /**
   * 是否模态
   *
   * 模态时将阻止与低层视图的交互
   * */
  modal?: boolean;

  /** 标题 */
  title?: string;
  /** 是否可关闭 */
  closeable?: boolean;

  /** 脚部 */
  footer?: Footer;

  /**
   * 关闭事件（v3-easyui Dialog BUG：点击Dialog自带的❌关闭时，无论返回何值都会关闭对话框，但ArkDialogOptions.show属性受到onClose返回值影响）
   * - 当返回值是void时，关闭对话框
   * - 当返回值是一个boolean类型，只有值为true时才会关闭对话框
   * - 当返回值是一个Promise，只有处于fulfilled状态时才会关闭对话框
   * */
  onClose?: (params?: any) => void | boolean | Promise<void>;

  /** 对话框组件v-bind指令参数 */
  attributes?: Record<string, any>;
  /** 对话框组件v-on指令参数 */
  events?: Record<string, any>;
}

/** options默认值 */
const arkDialogOptionsDefault: Partial<ArkDialogOptions> = {
  show: false,
  modal: true,
  closeable: true,
  attributes: {
    draggable: true,
  },
  events: {},
};
export default arkDialogOptionsDefault;